package com.fire.control.system.support.util;

import org.springframework.util.DigestUtils;

import com.fire.control.system.support.util.code.Base64Util;
import com.fire.control.system.support.util.code.Blowfish;
import com.fire.control.system.support.util.code.DigestUtil;


/**
* @ClassName: XdaoPassword
* @Description: TODO(加密&解密)
* @author wanbo
* @date 2017年7月8日 上午10:54:20
*/
public class XdaoPassword {
	
	private static Blowfish blowfish = new Blowfish(StaticValue.lora_company_secret_key);

	/**
	 * @Title: encrypt
	 * @Description: TODO(密码加密规则：blowfish随机加密生成不同的密码编码)
	 * @author wanbo
	 * @date 2017年7月8日 上午1:55:58
	 * @param str
	 * @return
	 */
	public static String encrypt(String str) {
		return blowfish.encryptString(str);
	}
	
	/**
	 * @Title: decrypt
	 * @Description: TODO(密码解密规则：blowfish解密成明文密码)
	 * @author wanbo
	 * @date 2017年7月8日 上午1:55:44
	 * @param str
	 * @return
	 */
	public static String decrypt(String str) {
		return blowfish.decryptString(str);
	}
	
	//base64加密
	private static String encrypt_base64(String str) {
		return new String(Base64Util.encodeBase64(str.getBytes(),true));
	}
	
	//base64解密
	private static String decrypt_base64(String str) {
		return new String(Base64Util.decodeBase64(str));
	}
	
	//md5Hex_base64 加密-不可逆(http://www.cmd5.com/ 已破解)
	private static String encrypt_md5Hex_base64(String str) {
		return DigestUtil.md5Hex(Base64Util.encodeBase64(str.getBytes()));
	}
	
	//MD5-32加密 - 可逆
	private static String md5DigestAsHex(String str){
		return DigestUtils.md5DigestAsHex(str.getBytes());
	}
	
	
	/**
	* @Title: getRandomCode
	* @Description: TODO(随机验证码)
	* @author wanbo
	* @date  2017年7月8日 上午11:18:12
	* @return
	*/
	public static String getRandomCode() {
		return PassWordUtil.createPassWord(4);
	}
	
	
	/**
	* @Title: getPassword
	* @Description: TODO(随机密码)
	* @author wanbo
	* @date  2017年7月15日 上午9:52:56
	* @return
	*/
	public static String getPassword(){
		return PassWordUtil.createPassWord(6);
	}


	public static void main(String args[]) {
		
		
		blowfish = new Blowfish("xdao");
		
		
		String pwd = "123";//getPassword();
		System.out.println("随机密码:"+pwd);
		System.out.println("blowfish 加密后:" + encrypt(pwd));
		System.out.println("blowfish 解密后:"+ decrypt("e900001344dbe3be4abcd1cdad77c4958ce21ab91cdf5c05"));
		
		/*System.out.println("base64  加密后:" + encrypt_base64(pwd));
		System.out.println("base64  解密后:"+ decrypt_base64(encrypt_base64(pwd)));
		System.out.println("md5Hex_base64 加密后:" + encrypt_md5Hex_base64(pwd));
		System.out.println("MD5-32 加密后:"+md5DigestAsHex(pwd));*/
		
		System.out.println(getPassword());

	}
	
}
